package com.alibaba.citrus.ots.b2b.trade.order.dto.request;

import com.alibaba.citrus.ots.b2b.trade.order.dto.enums.OrderStatus;
import com.alibaba.cz.base.tool.page.PageRequest;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class OrderPageQueryRequest extends PageRequest implements Serializable {
    private static final long serialVersionUID = -8011723195061321509L;

    /**
     * 主键/订单ID
     */
    private String id;

    /**
     * 货品
     */
    private String product;

    /**
     * 联系人
     */
    private String contact;

    /**
     * 联系人电话
     */
    private String contactPhone;

    /**
     * 提交原因，创建销售单原因
     */
    private List<String> createReason;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建人姓名
     */
    private String creatorName;

    /**
     * 修改人姓名
     */
    private String modifierName;

    /**
     * 完结时间
     */
    private Date endTime;

    /**
     * 运输方式编码
     */
    private String transportModeCode;

    /**
     * 运输方式名称
     */
    private String transportModeName;

    /**
     * 逻辑仓库编码，发货仓
     */
    private String wareHouseCode;

    /**
     * 逻辑仓库名称
     */
    private String wareHouseName;

    /**
     * 客户参考号，客户的采购单据
     */
    private String customerReferenceNo;

    /**
     * 客户参考日期，期望交货日期
     */
    private Date customerExpectDate;

    /**
     * 成本中心
     */
    private String costCenter;

    /**
     * 现金客户名称
     */
    private String cashCustomerName;

    /**
     * 版本号
     */
    private Integer syncVersion;

    /**
     * 订单总金额
     */
    private Long orderTotalFee;

    /**
     * 实付金额
     */
    private Long actualPaidFee;

    /**
     * 应付总金额，对应预报单活动价总金额或者总金额
     */
    private Integer shouldPayFee;

    /**
     * 邮费
     */
    private Long postFee;

    /**
     * 付款状态，默认已付款
     */
    private String payStatus;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 交付状态，待交货，部分交货，已交货
     */
    private Integer deliveryStatus;

    /**
     * 外部SAP销售订单号
     */
    private String outerOrderId;

    /**
     * 业务身份
     */
    private String bizCode;

    /**
     * 商业能力编码
     */
    private String businessCode;

    /**
     * 订单类型（免费订单，现金订单，标准订单）
     */
    private String orderType;

    /**
     * 订单标签，标识同一订单类型下，不同场景的订单
     */
    private String orderTag;

    /**
     * 客户编码，SAP客户编码，售达方编码
     */
    private String customerCode;

    /**
     * 客户名称，SAP客户名称，售达方名称
     */
    private String customerName;

    /**
     * 销售组织编码
     */
    private String organizationCode;

    /**
     * 销售组织名称
     */
    private String organizationName;

    /**
     * 销售部门编码
     */
    private List<String> departmentCode;

    /**
     * 销售部门名称
     */
    private String departmentName;

    /**
     * 货品组编码
     */
    private List<String> productGroupCode;

    /**
     * 货品组名称
     */
    private String productGroupName;

    /**
     * 销售渠道编码
     */
    private List<String> saleChannelCode;

    /**
     * 销售渠道名称
     */
    private String saleChannelName;

    /**
     * 业务渠道编码，现代，特通等
     */
    private List<String> channelCode;

    /**
     * 业务渠道名称
     */
    private String channelName;

    /**
     * 收货地址编码，送达方地址
     */
    private String receiveAddressCode;

    /**
     * 收货地址详细地址
     */
    private String receiveDetailAddress;

    /**
     * 单据状态
     * {@link OrderStatus}
     */
    private Integer status;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 修改人
     */
    private String modifier;

    /**
     * 扩展信息
     */
    private Map<String,String> features;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 修改时间
     */
    private Date gmtModified;

    /**
     * 预报主单ID
     */
    private String frontOrderId;
}
